import { tr } from 'date-fns/locale'

//node中封装了fs库，可以用于本地静态文件的读写操作
let fs = require('fs')
let path = require('path')

/**
 * 读取文件目录
 * @param {*} filePath 文件路径
 * @returns 
 */
export const readdir = (filePath = 'G:\\ZipTest\\004-001-038') => {
    return new Promise((resolve) => {
        fs.readdir(filePath, (e, files) => {
            console.log(e, files);
            resolve({ e, files })
        })
    })

}

// 异步 使用fs.stat()代替exists

export const mkdirAsync = (dirname, callback) => {

    if (fs.existsSync(dirname)) {
        callback && callback();
        return;
    }
    fs.stat(dirname, (err, stat) => {
        if (stat) callback && callback(); else { mkdirAsync(path.dirname(dirname), () => { fs.mkdir(dirname, callback); }); }
    });

}

// 同步 保证执行完成之后再执行后续操作
export const mkdirSync = (dirname) => {
    if (fs.existsSync(dirname)) { return true; }
    if (mkdirSync(path.dirname(dirname))) { fs.mkdirSync(dirname); return true; }
}

/**
 * 判断是否是文件 Boolean
 * @param {*} filepath 
 * @returns 
 */
export const isFile = (filepath) => {
    let stat = fs.statSync(...filepath)
    console.log("stat", stat)
    return stat.isFile()
}
/**
 * 判断是否是文件夹 Boolean
 * @param {*} filepath 
 * @returns 
 */
export const isDir = (filepath) => {
    let stat = fs.statSync(filepath);
    return stat.isDirectory();
};

/**
 * 递归删除所有文件和文件夹
 * @param {*} dirPath  文件路径
 */
export const deleteDirectory = (dirPath) => {
    try {
        if (fs.existsSync(dirPath)) {
            fs.readdirSync(dirPath).forEach((file, index) => {
                const curPath = `${dirPath}/${file}`;
                if (fs.lstatSync(curPath).isDirectory()) {
                    // 递归删除子目录  
                    deleteDirectory(curPath);
                } else {
                    // 删除文件  
                    fs.unlinkSync(curPath);
                }
            });
            // 删除目录  
            fs.rmdirSync(dirPath);
        }
    } catch (error) {
        console.error("删除文件失败：", error)
    }

}
/**
 * 删除文件，并删除上一层空文件夹
 * @param {*} filePath  文件路径
 */
export const deleteFile = (filePath) => {
    try {
        const stat = fs.statSync(filePath);
        if (stat.isFile()) {
            // 如果是文件，直接删除  
            fs.unlinkSync(filePath);
        }
        const dirPath = path.dirname(filePath);
        if (fs.existsSync(dirPath)) {
            var files = fs.readdirSync(dirPath);
            if (files.length === 0) {
                // 如果上一层目录为空，删除它  
                fs.rmdir(dirPath, (err) => {
                    if (err) {
                        console.error(`Error deleting directory ${dirPath}: `, err);
                    } else {
                        console.log(`Deleted directory ${dirPath}`);
                    }
                });
            }
        }
    } catch (error) {
        console.error("删除文件失败：", error)
    }

}


//  //创建文件夹
//  fs.mkdir("G:\\ZipTest\\004-001-038\\my1", (err) => {  })
//  fs.mkdir(path.join(__dirname, "my"), (err) => {
//    console.log("成功了")
//  })

//  fs.unlink("G:\\ZipTest\\004-001-038\\004-001-038-008.pdf", e => {
//    console.error(e);
//  })
//  fs.readdir('G:\\ZipTest\\004-001-038', (e, data) => {
//    console.log(e);
//    console.info(data)
//  })














